{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3659cbd7",
   "metadata": {},
   "source": [
    "训练模型、评估模型\n",
    "\n",
    "主要得到：\n",
    "\n",
    "训练好的模型、模型评估结果"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48ceb14a",
   "metadata": {},
   "source": [
    "# 读取数据和引入模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "398828d7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.115082Z",
     "start_time": "2022-06-21T10:21:50.769464Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import sklearn as sk\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import roc_curve,auc,confusion_matrix,recall_score,precision_score,accuracy_score\n",
    "import main\n",
    "import variable_encode as ve\n",
    "import variable_bin_methods as vb\n",
    "import variable_bin_methods as varbin_meth\n",
    "import pickle\n",
    "import stat\n",
    "import toad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "86342b66",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.194649Z",
     "start_time": "2022-06-21T10:21:53.118104Z"
    }
   },
   "outputs": [],
   "source": [
    "data_train_woe = pd.read_csv('逻辑回归/data_train_woe.csv')\n",
    "data_train=pd.read_csv('逻辑回归/data_train.csv')\n",
    "data_train = data_train.iloc[:,1:]\n",
    "data_train_woe = data_train_woe.iloc[:,1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "3becc1dd",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.210540Z",
     "start_time": "2022-06-21T10:21:53.197660Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train = data_train_woe.drop(columns = ['loan_status'])\n",
    "x_train = data_train.drop(columns = ['loan_status'])\n",
    "Y_train = data_train_woe['loan_status']\n",
    "y_train = data_train['loan_status']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "6a4f7f8c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.225542Z",
     "start_time": "2022-06-21T10:21:53.213544Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((26313, 19), (26313,))"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape,Y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "69652b25",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.240534Z",
     "start_time": "2022-06-21T10:21:53.227532Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    19016\n",
       "1     7297\n",
       "Name: loan_status, dtype: int64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_train.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "56515105",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.270551Z",
     "start_time": "2022-06-21T10:21:53.243536Z"
    }
   },
   "outputs": [],
   "source": [
    "data_test_woe = pd.read_csv('逻辑回归/data_test_woe.csv')\n",
    "data_test=pd.read_csv('逻辑回归/data_test.csv')\n",
    "data_test_woe = data_test_woe.iloc[:,1:]\n",
    "data_test = data_test.iloc[:,1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "09c308dc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.285816Z",
     "start_time": "2022-06-21T10:21:53.272542Z"
    }
   },
   "outputs": [],
   "source": [
    "X_test = data_test_woe.drop(columns = ['loan_status'])\n",
    "x_test = data_test.drop(columns = ['loan_status'])\n",
    "Y_test = data_test_woe['loan_status']\n",
    "y_test = data_test['loan_status']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "fcd62a05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((6579, 19), (6579,))"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test.shape,Y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "0e8e3eb9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:53.316832Z",
     "start_time": "2022-06-21T10:21:53.304829Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    4777\n",
       "1    1802\n",
       "Name: loan_status, dtype: int64"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_test.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb078475",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "639e7d75",
   "metadata": {},
   "source": [
    "## 网格搜索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "fc25f556",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:57.031896Z",
     "start_time": "2022-06-21T10:21:53.320822Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 21 candidates, totalling 63 fits\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'C': 2, 'class_weight': {1: 3, 0: 1}}"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##初始化网格搜索\n",
    "##penalty,选择使用哪种正则项来抑制过拟合,默认为'l2'，即使用L2正则\n",
    "##fit_intercept,模型训练时是否添加截距项,默认为True，即添加截距项\n",
    "##solver：字符串，用于选择不同的优化算法\n",
    "##cv,交叉验证\n",
    "##scoring,模型评估指标\n",
    "##verbose：输出训练过程\n",
    "##n_jobs：使用CPU个数\n",
    "##param_grid，待搜索的全部参数组合\n",
    "param={'C':[0.01,0.1,0.2,0.5,1,1.5,2],'class_weight':[{1: 1, 0: 1}, {1: 2, 0: 1}, {1: 3, 0: 1}]}\n",
    "gridsearch=sk.model_selection.GridSearchCV(estimator=LogisticRegression(random_state=0,fit_intercept=True,penalty='l2',solver='saga'),\n",
    "                                          param_grid=param,cv=3,scoring='f1',n_jobs=-1,verbose=2)\n",
    "gridsearch.fit(X_train,Y_train)\n",
    "gridsearch.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2524b491",
   "metadata": {},
   "source": [
    "## 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "07aad493",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:57.094921Z",
     "start_time": "2022-06-21T10:21:57.033892Z"
    }
   },
   "outputs": [],
   "source": [
    "##正则项惩罚系数C,\n",
    "##权重字典class_weight\n",
    "LR_model=LogisticRegression(C=gridsearch.best_params_['C'],penalty='l2',solver='saga',class_weight=gridsearch.best_params_['class_weight'])\n",
    "LR_model_fit=LR_model.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e516908",
   "metadata": {},
   "source": [
    "## 预测与评估"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3775122",
   "metadata": {},
   "source": [
    "### 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "941b2cb5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:57.125927Z",
     "start_time": "2022-06-21T10:21:57.096904Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>2694</td>\n",
       "      <td>2083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>460</td>\n",
       "      <td>1342</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      预测为好  预测为坏\n",
       "标签为好  2694  2083\n",
       "标签为坏   460  1342"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_pred_test = LR_model_fit.predict(X_test)\n",
    "Y_pred_train=LR_model_fit.predict(X_train)\n",
    "cnf_matrix = confusion_matrix(Y_test,Y_pred_test)\n",
    "cnf_matrix = pd.DataFrame(cnf_matrix,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84db1e13",
   "metadata": {},
   "source": [
    "### 评估指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "c0e656ea",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:57.156934Z",
     "start_time": "2022-06-21T10:21:57.127911Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率</th>\n",
       "      <th>AUC</th>\n",
       "      <th>KS值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.613467</td>\n",
       "      <td>0.713026</td>\n",
       "      <td>0.314816</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        准确率       AUC       KS值\n",
       "0  0.613467  0.713026  0.314816"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy=sk.metrics.accuracy_score(Y_test,Y_pred_test)\n",
    "Y_score=LR_model_fit.predict_proba(X_test)[:,1]\n",
    "auc=sk.metrics.roc_auc_score(Y_test,Y_score)\n",
    "fpr,tpr,threshold=sk.metrics.roc_curve(Y_test,Y_score)\n",
    "ks=max([trp_ - fpr_ for trp_, fpr_ in zip(tpr, fpr)])\n",
    "estimate=pd.DataFrame([[accuracy,auc,ks]],columns=['准确率','AUC','KS值'])\n",
    "estimate"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "736f2406",
   "metadata": {},
   "source": [
    "### ks、roc曲线 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "bad5a1c2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-21T10:21:57.356665Z",
     "start_time": "2022-06-21T10:21:57.158919Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "Y_proba = LR_model_fit.predict_proba(X_test)\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(Y_test))):\n",
    "    fpr,tpr,thresholds = roc_curve(Y_test,Y_proba[:,i],pos_label = i)\n",
    "axe1.plot(fpr,tpr)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds,tpr,label = 'TPR')\n",
    "axe2.plot(1 - thresholds,fpr,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a3520a41",
   "metadata": {},
   "source": [
    "### 计算权重与截距 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "b5715607",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'installment_BIN_woe': 1.0129301900402226, 'annual_inc_BIN_woe': 0.17866129301757452, 'dti_BIN_woe': 0.8563450811793291, 'revol_bal_BIN_woe': -0.24757781875443818, 'open_il_24m_BIN_woe': -0.02421761138008454, 'mths_since_rcnt_il_BIN_woe': 0.40968881013859765, 'all_util_BIN_woe': 0.4626827660443838, 'avg_cur_bal_BIN_woe': 0.4810214993339307, 'bc_open_to_buy_BIN_woe': 0.8447590347718568, 'mo_sin_old_il_acct_BIN_woe': 0.06161200080196105, 'mo_sin_old_rev_tl_op_BIN_woe': 0.5537055500684598, 'mort_acc_BIN_woe': 0.26789245774268894, 'num_il_tl_BIN_woe': 0.8995672982630656, 'num_rev_tl_bal_gt_0_BIN_woe': 1.0670641083973056, 'percent_bc_gt_75_BIN_woe': 0.1156879698521975, 'term_BIN_woe': 0.9685868190146028, 'emp_length_BIN_woe': 0.9294140490182861, 'home_ownership_BIN_woe': 0.4781884499381337, 'verification_status_BIN_woe': 0.6938080762722155, 'intercept': 0.1378050349530253}\n"
     ]
    }
   ],
   "source": [
    "data_woe_train,dict_woe_map_train,dict_iv_train,var_woe_name_train=ve.woe_encode(x_train,r\"逻辑回归\",list(x_train.columns),y_train,filename='woe',flag='train')\n",
    "data_woe_test,var_woe_name=ve.woe_encode(x_test,r\"逻辑回归\",list(x_test.columns),y_test,filename='woe',flag='test')\n",
    "var_woe_name.append('intercept')\n",
    "##提取权重\n",
    "weight_value = list(LR_model_fit.coef_.flatten())\n",
    "##提取截距项\n",
    "weight_value.extend(list(LR_model_fit.intercept_))\n",
    "dict_params = dict(zip(var_woe_name,weight_value))\n",
    "print(dict_params)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "236f20b5",
   "metadata": {},
   "source": [
    "### 评分卡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "264068d4",
   "metadata": {},
   "outputs": [],
   "source": [
    "dict_cont_bin_read = open('逻辑回归/dict_cont_bin.pkl','rb')\n",
    "dict_cont_bin = pickle.load(dict_cont_bin_read)\n",
    "dict_cont_bin_read.close()\n",
    "\n",
    "dict_disc_bin_read = open('逻辑回归/dict_disc_bin.pkl','rb')\n",
    "dict_disc_bin = pickle.load(dict_disc_bin_read)\n",
    "dict_disc_bin_read.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "f6eebebd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bin</th>\n",
       "      <th>woe_val</th>\n",
       "      <th>score</th>\n",
       "      <th>total</th>\n",
       "      <th>var_name</th>\n",
       "      <th>var_name_raw</th>\n",
       "      <th>score_base</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.265857</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>11068.0</td>\n",
       "      <td>526.9645_inf</td>\n",
       "      <td>installment</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.028432</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5744.0</td>\n",
       "      <td>237.88150000000002_334.24250000000006</td>\n",
       "      <td>installment</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.086491</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>8072.0</td>\n",
       "      <td>334.24250000000006_526.9645</td>\n",
       "      <td>installment</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.309211</td>\n",
       "      <td>9.0</td>\n",
       "      <td>3923.0</td>\n",
       "      <td>160.79270000000002_237.88150000000002</td>\n",
       "      <td>installment</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.759782</td>\n",
       "      <td>22.0</td>\n",
       "      <td>4085.0</td>\n",
       "      <td>-inf_160.79270000000002</td>\n",
       "      <td>installment</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.019048</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10655.0</td>\n",
       "      <td>56273.64_89306.22</td>\n",
       "      <td>annual_inc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.188655</td>\n",
       "      <td>1.0</td>\n",
       "      <td>11237.0</td>\n",
       "      <td>89306.22_inf</td>\n",
       "      <td>annual_inc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.163085</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>9243.0</td>\n",
       "      <td>29532.98_56273.64</td>\n",
       "      <td>annual_inc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.355267</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>1757.0</td>\n",
       "      <td>-inf_29532.98</td>\n",
       "      <td>annual_inc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.087062</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6875.0</td>\n",
       "      <td>13.952100000000002_19.1505</td>\n",
       "      <td>dti</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.142089</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>11018.0</td>\n",
       "      <td>19.1505_31.171800000000005</td>\n",
       "      <td>dti</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.382184</td>\n",
       "      <td>-9.0</td>\n",
       "      <td>4024.0</td>\n",
       "      <td>31.171800000000005_inf</td>\n",
       "      <td>dti</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.262734</td>\n",
       "      <td>6.0</td>\n",
       "      <td>10884.0</td>\n",
       "      <td>-inf_13.952100000000002</td>\n",
       "      <td>dti</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.284088</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>91.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>dti</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.086364</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>5420.0</td>\n",
       "      <td>3241.0_6532.4</td>\n",
       "      <td>revol_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.005980</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3618.0</td>\n",
       "      <td>25810.6_46499.4</td>\n",
       "      <td>revol_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.097320</td>\n",
       "      <td>1.0</td>\n",
       "      <td>16896.0</td>\n",
       "      <td>6532.4_25810.6</td>\n",
       "      <td>revol_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.208999</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>5209.0</td>\n",
       "      <td>-inf_3241.0</td>\n",
       "      <td>revol_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>-0.126447</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1749.0</td>\n",
       "      <td>46499.4_inf</td>\n",
       "      <td>revol_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.194808</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>5034.0</td>\n",
       "      <td>3.04_7.04</td>\n",
       "      <td>open_il_24m</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.057750</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>12178.0</td>\n",
       "      <td>1.12_3.04</td>\n",
       "      <td>open_il_24m</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.033929</td>\n",
       "      <td>0.0</td>\n",
       "      <td>9214.0</td>\n",
       "      <td>0.16_1.12</td>\n",
       "      <td>open_il_24m</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.193622</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6101.0</td>\n",
       "      <td>-inf_0.16</td>\n",
       "      <td>open_il_24m</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.216916</td>\n",
       "      <td>0.0</td>\n",
       "      <td>365.0</td>\n",
       "      <td>7.04_inf</td>\n",
       "      <td>open_il_24m</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.064270</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>9364.0</td>\n",
       "      <td>12.0_29.0</td>\n",
       "      <td>mths_since_rcnt_il</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.118297</td>\n",
       "      <td>1.0</td>\n",
       "      <td>17745.0</td>\n",
       "      <td>1.5_12.0</td>\n",
       "      <td>mths_since_rcnt_il</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.189605</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>3982.0</td>\n",
       "      <td>29.0_inf</td>\n",
       "      <td>mths_since_rcnt_il</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.112703</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1065.0</td>\n",
       "      <td>-inf_1.5</td>\n",
       "      <td>mths_since_rcnt_il</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.626040</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>736.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>mths_since_rcnt_il</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.184960</td>\n",
       "      <td>2.0</td>\n",
       "      <td>8100.0</td>\n",
       "      <td>28.36_47.53</td>\n",
       "      <td>all_util</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.215744</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>14886.0</td>\n",
       "      <td>57.47_inf</td>\n",
       "      <td>all_util</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.025368</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>5843.0</td>\n",
       "      <td>47.53_57.47</td>\n",
       "      <td>all_util</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.593422</td>\n",
       "      <td>8.0</td>\n",
       "      <td>4049.0</td>\n",
       "      <td>-inf_28.36</td>\n",
       "      <td>all_util</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>-0.988093</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>all_util</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.195275</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>18303.0</td>\n",
       "      <td>-inf_10541.6</td>\n",
       "      <td>avg_cur_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.201672</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10514.0</td>\n",
       "      <td>10541.6_32802.21</td>\n",
       "      <td>avg_cur_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.454910</td>\n",
       "      <td>6.0</td>\n",
       "      <td>4069.0</td>\n",
       "      <td>32802.21_inf</td>\n",
       "      <td>avg_cur_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.140795</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>avg_cur_bal</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.597194</td>\n",
       "      <td>15.0</td>\n",
       "      <td>5541.0</td>\n",
       "      <td>32108.24_inf</td>\n",
       "      <td>bc_open_to_buy</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.332643</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>9416.0</td>\n",
       "      <td>-inf_4550.56</td>\n",
       "      <td>bc_open_to_buy</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.101228</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>7846.0</td>\n",
       "      <td>4550.56_11739.52</td>\n",
       "      <td>bc_open_to_buy</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.118818</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>506.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>bc_open_to_buy</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.147578</td>\n",
       "      <td>4.0</td>\n",
       "      <td>9583.0</td>\n",
       "      <td>11739.52_32108.24</td>\n",
       "      <td>bc_open_to_buy</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.094768</td>\n",
       "      <td>0.0</td>\n",
       "      <td>23467.0</td>\n",
       "      <td>90.71000000000001_inf</td>\n",
       "      <td>mo_sin_old_il_acct</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.125121</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>6765.0</td>\n",
       "      <td>34.61_90.71000000000001</td>\n",
       "      <td>mo_sin_old_il_acct</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.706503</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>32.74_34.61</td>\n",
       "      <td>mo_sin_old_il_acct</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.353501</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1761.0</td>\n",
       "      <td>-inf_32.74</td>\n",
       "      <td>mo_sin_old_il_acct</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.626040</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>736.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>mo_sin_old_il_acct</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.119698</td>\n",
       "      <td>2.0</td>\n",
       "      <td>19335.0</td>\n",
       "      <td>138.06_inf</td>\n",
       "      <td>mo_sin_old_rev_tl_op</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.328713</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>6340.0</td>\n",
       "      <td>-inf_84.68</td>\n",
       "      <td>mo_sin_old_rev_tl_op</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.007210</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>7217.0</td>\n",
       "      <td>84.68_138.06</td>\n",
       "      <td>mo_sin_old_rev_tl_op</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.260678</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>14223.0</td>\n",
       "      <td>-inf_0.17</td>\n",
       "      <td>mort_acc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.047869</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5496.0</td>\n",
       "      <td>0.17_1.02</td>\n",
       "      <td>mort_acc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.234387</td>\n",
       "      <td>2.0</td>\n",
       "      <td>8675.0</td>\n",
       "      <td>1.02_3.06</td>\n",
       "      <td>mort_acc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.410310</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4498.0</td>\n",
       "      <td>3.06_inf</td>\n",
       "      <td>mort_acc</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-0.177392</td>\n",
       "      <td>5.0</td>\n",
       "      <td>14419.0</td>\n",
       "      <td>8.06_inf</td>\n",
       "      <td>num_il_tl</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.034008</td>\n",
       "      <td>1.0</td>\n",
       "      <td>9241.0</td>\n",
       "      <td>4.16_8.06</td>\n",
       "      <td>num_il_tl</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.198521</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>6979.0</td>\n",
       "      <td>1.04_4.16</td>\n",
       "      <td>num_il_tl</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.525143</td>\n",
       "      <td>-14.0</td>\n",
       "      <td>2253.0</td>\n",
       "      <td>-inf_1.04</td>\n",
       "      <td>num_il_tl</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.099197</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10059.0</td>\n",
       "      <td>2.04_4.08</td>\n",
       "      <td>num_rev_tl_bal_gt_0</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.086418</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>11913.0</td>\n",
       "      <td>4.08_8.04</td>\n",
       "      <td>num_rev_tl_bal_gt_0</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.252329</td>\n",
       "      <td>8.0</td>\n",
       "      <td>6541.0</td>\n",
       "      <td>-inf_2.04</td>\n",
       "      <td>num_rev_tl_bal_gt_0</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.314100</td>\n",
       "      <td>-10.0</td>\n",
       "      <td>4379.0</td>\n",
       "      <td>8.04_inf</td>\n",
       "      <td>num_rev_tl_bal_gt_0</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.283686</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13692.0</td>\n",
       "      <td>-inf_1.0</td>\n",
       "      <td>percent_bc_gt_75</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.159134</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>10290.0</td>\n",
       "      <td>20.0_70.0</td>\n",
       "      <td>percent_bc_gt_75</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.383227</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>4776.0</td>\n",
       "      <td>70.0_inf</td>\n",
       "      <td>percent_bc_gt_75</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.118818</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>507.0</td>\n",
       "      <td>nan_nan</td>\n",
       "      <td>percent_bc_gt_75</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.035111</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3627.0</td>\n",
       "      <td>1.0_20.0</td>\n",
       "      <td>percent_bc_gt_75</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.146213</td>\n",
       "      <td>4.0</td>\n",
       "      <td>23727.0</td>\n",
       "      <td>36 months</td>\n",
       "      <td>term</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.341173</td>\n",
       "      <td>-10.0</td>\n",
       "      <td>9165.0</td>\n",
       "      <td>60 months</td>\n",
       "      <td>term</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.216617</td>\n",
       "      <td>6.0</td>\n",
       "      <td>10280.0</td>\n",
       "      <td>10+ years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>-0.216617</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1018.0</td>\n",
       "      <td>8 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.434429</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>2666.0</td>\n",
       "      <td>NA</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.063658</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2847.0</td>\n",
       "      <td>2 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.063658</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2331.0</td>\n",
       "      <td>1 year</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5.0</td>\n",
       "      <td>-0.050517</td>\n",
       "      <td>1.0</td>\n",
       "      <td>779.0</td>\n",
       "      <td>9 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5.0</td>\n",
       "      <td>-0.050517</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1464.0</td>\n",
       "      <td>6 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5.0</td>\n",
       "      <td>-0.050517</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1940.0</td>\n",
       "      <td>4 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.003375</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>2475.0</td>\n",
       "      <td>3 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.003375</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>2184.0</td>\n",
       "      <td>5 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.003375</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>1156.0</td>\n",
       "      <td>7 years</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.235131</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>3752.0</td>\n",
       "      <td>&lt; 1 year</td>\n",
       "      <td>emp_length</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.259443</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>12240.0</td>\n",
       "      <td>RENT</td>\n",
       "      <td>home_ownership</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.081222</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>4115.0</td>\n",
       "      <td>ANY%OWN</td>\n",
       "      <td>home_ownership</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.234280</td>\n",
       "      <td>3.0</td>\n",
       "      <td>16537.0</td>\n",
       "      <td>MORTGAGE</td>\n",
       "      <td>home_ownership</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.088094</td>\n",
       "      <td>2.0</td>\n",
       "      <td>13635.0</td>\n",
       "      <td>Not Verified</td>\n",
       "      <td>verification_status</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.054821</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13963.0</td>\n",
       "      <td>Source Verified</td>\n",
       "      <td>verification_status</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.339657</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>5294.0</td>\n",
       "      <td>Verified</td>\n",
       "      <td>verification_status</td>\n",
       "      <td>478</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    bin   woe_val  score    total                               var_name  \\\n",
       "0   5.0  0.265857   -8.0  11068.0                           526.9645_inf   \n",
       "1   3.0 -0.028432    1.0   5744.0  237.88150000000002_334.24250000000006   \n",
       "2   4.0  0.086491   -3.0   8072.0            334.24250000000006_526.9645   \n",
       "3   2.0 -0.309211    9.0   3923.0  160.79270000000002_237.88150000000002   \n",
       "4   1.0 -0.759782   22.0   4085.0                -inf_160.79270000000002   \n",
       "0   3.0 -0.019048    0.0  10655.0                      56273.64_89306.22   \n",
       "1   4.0 -0.188655    1.0  11237.0                           89306.22_inf   \n",
       "2   2.0  0.163085   -1.0   9243.0                      29532.98_56273.64   \n",
       "3   1.0  0.355267   -2.0   1757.0                          -inf_29532.98   \n",
       "0   2.0 -0.087062    2.0   6875.0             13.952100000000002_19.1505   \n",
       "1   3.0  0.142089   -4.0  11018.0             19.1505_31.171800000000005   \n",
       "2   4.0  0.382184   -9.0   4024.0                 31.171800000000005_inf   \n",
       "3   1.0 -0.262734    6.0  10884.0                -inf_13.952100000000002   \n",
       "4   5.0  0.284088   -7.0     91.0                                nan_nan   \n",
       "0   2.0 -0.086364   -1.0   5420.0                          3241.0_6532.4   \n",
       "1   4.0  0.005980    0.0   3618.0                        25810.6_46499.4   \n",
       "2   3.0  0.097320    1.0  16896.0                         6532.4_25810.6   \n",
       "3   1.0 -0.208999   -1.0   5209.0                            -inf_3241.0   \n",
       "4   5.0 -0.126447   -1.0   1749.0                            46499.4_inf   \n",
       "0   4.0 -0.194808   -0.0   5034.0                              3.04_7.04   \n",
       "1   3.0 -0.057750   -0.0  12178.0                              1.12_3.04   \n",
       "2   2.0  0.033929    0.0   9214.0                              0.16_1.12   \n",
       "3   1.0  0.193622    0.0   6101.0                              -inf_0.16   \n",
       "4   5.0  0.216916    0.0    365.0                               7.04_inf   \n",
       "0   3.0  0.064270   -1.0   9364.0                              12.0_29.0   \n",
       "1   2.0 -0.118297    1.0  17745.0                               1.5_12.0   \n",
       "2   4.0  0.189605   -2.0   3982.0                               29.0_inf   \n",
       "3   1.0  0.112703   -1.0   1065.0                               -inf_1.5   \n",
       "4   5.0  0.626040   -7.0    736.0                                nan_nan   \n",
       "0   2.0 -0.184960    2.0   8100.0                            28.36_47.53   \n",
       "1   4.0  0.215744   -3.0  14886.0                              57.47_inf   \n",
       "2   3.0  0.025368   -0.0   5843.0                            47.53_57.47   \n",
       "3   1.0 -0.593422    8.0   4049.0                             -inf_28.36   \n",
       "4   5.0 -0.988093   13.0     14.0                                nan_nan   \n",
       "0   1.0  0.195275   -3.0  18303.0                           -inf_10541.6   \n",
       "1   2.0 -0.201672    3.0  10514.0                       10541.6_32802.21   \n",
       "2   3.0 -0.454910    6.0   4069.0                           32802.21_inf   \n",
       "3   4.0 -0.140795    2.0      6.0                                nan_nan   \n",
       "0   4.0 -0.597194   15.0   5541.0                           32108.24_inf   \n",
       "1   1.0  0.332643   -8.0   9416.0                           -inf_4550.56   \n",
       "2   2.0  0.101228   -2.0   7846.0                       4550.56_11739.52   \n",
       "3   5.0  0.118818   -3.0    506.0                                nan_nan   \n",
       "4   3.0 -0.147578    4.0   9583.0                      11739.52_32108.24   \n",
       "0   4.0 -0.094768    0.0  23467.0                  90.71000000000001_inf   \n",
       "1   3.0  0.125121   -0.0   6765.0                34.61_90.71000000000001   \n",
       "2   2.0  0.706503   -1.0    163.0                            32.74_34.61   \n",
       "3   1.0  0.353501   -1.0   1761.0                             -inf_32.74   \n",
       "4   5.0  0.626040   -1.0    736.0                                nan_nan   \n",
       "0   3.0 -0.119698    2.0  19335.0                             138.06_inf   \n",
       "1   1.0  0.328713   -5.0   6340.0                             -inf_84.68   \n",
       "2   2.0  0.007210   -0.0   7217.0                           84.68_138.06   \n",
       "0   1.0  0.260678   -2.0  14223.0                              -inf_0.17   \n",
       "1   2.0 -0.047869    0.0   5496.0                              0.17_1.02   \n",
       "2   3.0 -0.234387    2.0   8675.0                              1.02_3.06   \n",
       "3   4.0 -0.410310    3.0   4498.0                               3.06_inf   \n",
       "0   4.0 -0.177392    5.0  14419.0                               8.06_inf   \n",
       "1   3.0 -0.034008    1.0   9241.0                              4.16_8.06   \n",
       "2   2.0  0.198521   -5.0   6979.0                              1.04_4.16   \n",
       "3   1.0  0.525143  -14.0   2253.0                              -inf_1.04   \n",
       "0   2.0 -0.099197    3.0  10059.0                              2.04_4.08   \n",
       "1   3.0  0.086418   -3.0  11913.0                              4.08_8.04   \n",
       "2   1.0 -0.252329    8.0   6541.0                              -inf_2.04   \n",
       "3   4.0  0.314100  -10.0   4379.0                               8.04_inf   \n",
       "0   1.0 -0.283686    1.0  13692.0                               -inf_1.0   \n",
       "1   3.0  0.159134   -1.0  10290.0                              20.0_70.0   \n",
       "2   4.0  0.383227   -1.0   4776.0                               70.0_inf   \n",
       "3   5.0  0.118818   -0.0    507.0                                nan_nan   \n",
       "4   2.0 -0.035111    0.0   3627.0                               1.0_20.0   \n",
       "0   1.0 -0.146213    4.0  23727.0                              36 months   \n",
       "1   2.0  0.341173  -10.0   9165.0                              60 months   \n",
       "0   3.0 -0.216617    6.0  10280.0                              10+ years   \n",
       "1   3.0 -0.216617    6.0   1018.0                                8 years   \n",
       "2   6.0  0.434429  -12.0   2666.0                                     NA   \n",
       "3   4.0  0.063658   -2.0   2847.0                                2 years   \n",
       "4   4.0  0.063658   -2.0   2331.0                                 1 year   \n",
       "5   5.0 -0.050517    1.0    779.0                                9 years   \n",
       "6   5.0 -0.050517    1.0   1464.0                                6 years   \n",
       "7   5.0 -0.050517    1.0   1940.0                                4 years   \n",
       "8   2.0  0.003375   -0.0   2475.0                                3 years   \n",
       "9   2.0  0.003375   -0.0   2184.0                                5 years   \n",
       "10  2.0  0.003375   -0.0   1156.0                                7 years   \n",
       "11  1.0  0.235131   -6.0   3752.0                               < 1 year   \n",
       "0   3.0  0.259443   -4.0  12240.0                                   RENT   \n",
       "1   2.0  0.081222   -1.0   4115.0                                ANY%OWN   \n",
       "2   1.0 -0.234280    3.0  16537.0                               MORTGAGE   \n",
       "0   1.0 -0.088094    2.0  13635.0                           Not Verified   \n",
       "1   2.0 -0.054821    1.0  13963.0                        Source Verified   \n",
       "2   3.0  0.339657   -7.0   5294.0                               Verified   \n",
       "\n",
       "            var_name_raw  score_base  \n",
       "0            installment         478  \n",
       "1            installment         478  \n",
       "2            installment         478  \n",
       "3            installment         478  \n",
       "4            installment         478  \n",
       "0             annual_inc         478  \n",
       "1             annual_inc         478  \n",
       "2             annual_inc         478  \n",
       "3             annual_inc         478  \n",
       "0                    dti         478  \n",
       "1                    dti         478  \n",
       "2                    dti         478  \n",
       "3                    dti         478  \n",
       "4                    dti         478  \n",
       "0              revol_bal         478  \n",
       "1              revol_bal         478  \n",
       "2              revol_bal         478  \n",
       "3              revol_bal         478  \n",
       "4              revol_bal         478  \n",
       "0            open_il_24m         478  \n",
       "1            open_il_24m         478  \n",
       "2            open_il_24m         478  \n",
       "3            open_il_24m         478  \n",
       "4            open_il_24m         478  \n",
       "0     mths_since_rcnt_il         478  \n",
       "1     mths_since_rcnt_il         478  \n",
       "2     mths_since_rcnt_il         478  \n",
       "3     mths_since_rcnt_il         478  \n",
       "4     mths_since_rcnt_il         478  \n",
       "0               all_util         478  \n",
       "1               all_util         478  \n",
       "2               all_util         478  \n",
       "3               all_util         478  \n",
       "4               all_util         478  \n",
       "0            avg_cur_bal         478  \n",
       "1            avg_cur_bal         478  \n",
       "2            avg_cur_bal         478  \n",
       "3            avg_cur_bal         478  \n",
       "0         bc_open_to_buy         478  \n",
       "1         bc_open_to_buy         478  \n",
       "2         bc_open_to_buy         478  \n",
       "3         bc_open_to_buy         478  \n",
       "4         bc_open_to_buy         478  \n",
       "0     mo_sin_old_il_acct         478  \n",
       "1     mo_sin_old_il_acct         478  \n",
       "2     mo_sin_old_il_acct         478  \n",
       "3     mo_sin_old_il_acct         478  \n",
       "4     mo_sin_old_il_acct         478  \n",
       "0   mo_sin_old_rev_tl_op         478  \n",
       "1   mo_sin_old_rev_tl_op         478  \n",
       "2   mo_sin_old_rev_tl_op         478  \n",
       "0               mort_acc         478  \n",
       "1               mort_acc         478  \n",
       "2               mort_acc         478  \n",
       "3               mort_acc         478  \n",
       "0              num_il_tl         478  \n",
       "1              num_il_tl         478  \n",
       "2              num_il_tl         478  \n",
       "3              num_il_tl         478  \n",
       "0    num_rev_tl_bal_gt_0         478  \n",
       "1    num_rev_tl_bal_gt_0         478  \n",
       "2    num_rev_tl_bal_gt_0         478  \n",
       "3    num_rev_tl_bal_gt_0         478  \n",
       "0       percent_bc_gt_75         478  \n",
       "1       percent_bc_gt_75         478  \n",
       "2       percent_bc_gt_75         478  \n",
       "3       percent_bc_gt_75         478  \n",
       "4       percent_bc_gt_75         478  \n",
       "0                   term         478  \n",
       "1                   term         478  \n",
       "0             emp_length         478  \n",
       "1             emp_length         478  \n",
       "2             emp_length         478  \n",
       "3             emp_length         478  \n",
       "4             emp_length         478  \n",
       "5             emp_length         478  \n",
       "6             emp_length         478  \n",
       "7             emp_length         478  \n",
       "8             emp_length         478  \n",
       "9             emp_length         478  \n",
       "10            emp_length         478  \n",
       "11            emp_length         478  \n",
       "0         home_ownership         478  \n",
       "1         home_ownership         478  \n",
       "2         home_ownership         478  \n",
       "0    verification_status         478  \n",
       "1    verification_status         478  \n",
       "2    verification_status         478  "
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var_woe_name.append('intercept')\n",
    "dict_param=dict(zip(var_woe_name,weight_value))\n",
    "df_score,dict_bin_score,params_A,params_B,score_base=main.create_score(dict_woe_map_train, dict_param, dict_cont_bin,dict_disc_bin)\n",
    "pd.options.display.max_rows=None\n",
    "df_score"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "453bb066",
   "metadata": {},
   "source": [
    "### 样本评分 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "02808e1f",
   "metadata": {},
   "outputs": [],
   "source": [
    "##计算样本评分\n",
    "data3=pd.read_csv('逻辑回归/data3.csv')\n",
    "df_all_score = main.cal_score(data3,dict_bin_score,dict_cont_bin,dict_disc_bin,score_base)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd237fbf",
   "metadata": {},
   "source": [
    "### 评分区间生成 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "46c13a57",
   "metadata": {},
   "outputs": [],
   "source": [
    "##简单的分数区间计算\n",
    "good_total = sum(df_all_score.target == 0)  \n",
    "bad_total = sum(df_all_score.target == 1)\n",
    "score_bin = np.arange(350,600,25)\n",
    "bin_rate = []\n",
    "bad_rate = []\n",
    "ks = []\n",
    "good_num = []\n",
    "bad_num = []\n",
    "total_num=[]\n",
    "##取出分数区间的样本\n",
    "for i in range(len(score_bin)-1):\n",
    "    if score_bin[i+1] == 650:\n",
    "        index_1 = (df_all_score.score >= score_bin[i]) & (df_all_score.score <= score_bin[i+1]) \n",
    "    else:\n",
    "        index_1 = (df_all_score.score >= score_bin[i]) &(df_all_score.score < score_bin[i+1]) \n",
    "        df_temp = df_all_score.loc[index_1,['target','score']]\n",
    "        ##计算该分数区间的指标\n",
    "        good_num.append(sum(df_temp.target==0))\n",
    "        bad_num.append(sum(df_temp.target==1))\n",
    "        total_num.append(sum(df_temp.target==0)+sum(df_temp.target==1))\n",
    "        ##区间样本率\n",
    "        bin_rate.append(df_temp.shape[0]/df_all_score.shape[0]*100)\n",
    "        ##坏样本率\n",
    "        bad_rate.append(df_temp.target.sum()/df_temp.shape[0]*100)\n",
    "        ##以该分数为注入分数的ks值\n",
    "        ks.append(sum(bad_num[0:i+1])/bad_total-sum(good_num[0:i+1])/good_total)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "96198fbe",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_num</th>\n",
       "      <th>good_num</th>\n",
       "      <th>bad_num</th>\n",
       "      <th>bin_rate</th>\n",
       "      <th>bad_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.003040</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>151</td>\n",
       "      <td>48</td>\n",
       "      <td>103</td>\n",
       "      <td>0.459078</td>\n",
       "      <td>68.211921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2638</td>\n",
       "      <td>1239</td>\n",
       "      <td>1399</td>\n",
       "      <td>8.020187</td>\n",
       "      <td>53.032600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10603</td>\n",
       "      <td>6491</td>\n",
       "      <td>4112</td>\n",
       "      <td>32.235802</td>\n",
       "      <td>38.781477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>12684</td>\n",
       "      <td>9833</td>\n",
       "      <td>2851</td>\n",
       "      <td>38.562568</td>\n",
       "      <td>22.477137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5768</td>\n",
       "      <td>5180</td>\n",
       "      <td>588</td>\n",
       "      <td>17.536179</td>\n",
       "      <td>10.194175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>992</td>\n",
       "      <td>948</td>\n",
       "      <td>44</td>\n",
       "      <td>3.015931</td>\n",
       "      <td>4.435484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>55</td>\n",
       "      <td>54</td>\n",
       "      <td>1</td>\n",
       "      <td>0.167214</td>\n",
       "      <td>1.818182</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   total_num  good_num  bad_num   bin_rate    bad_rate\n",
       "0          0         0        0   0.000000         NaN\n",
       "1          1         0        1   0.003040  100.000000\n",
       "2        151        48      103   0.459078   68.211921\n",
       "3       2638      1239     1399   8.020187   53.032600\n",
       "4      10603      6491     4112  32.235802   38.781477\n",
       "5      12684      9833     2851  38.562568   22.477137\n",
       "6       5768      5180      588  17.536179   10.194175\n",
       "7        992       948       44   3.015931    4.435484\n",
       "8         55        54        1   0.167214    1.818182"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_result = pd.DataFrame({'total_num':total_num,'good_num':good_num,'bad_num':bad_num,'bin_rate':bin_rate,'bad_rate':bad_rate})\n",
    "df_result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b8d8fcea",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "384px"
   },
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
